#!/bin/bash

# shellcheck disable=SC1091
. ../../lib/shflags

# 使用更可靠的方式检测操作系统
if [[ "$(uname)" == "Darwin" ]]; then
  PASS=$(uuidgen)
else
  # 尝试多种方式生成随机密码
  if command -v uuidgen >/dev/null 2>&1; then
    PASS=$(uuidgen)
  elif [[ -f /proc/sys/kernel/random/uuid ]]; then
    PASS=$(cat /proc/sys/kernel/random/uuid)
  else
    # 如果以上方法都不可用，使用 openssl 生成随机字符串
    PASS=$(openssl rand -hex 16)
  fi
fi

DEFINE_string "password" "$PASS" 'root password' 'p'
DEFINE_integer "expose" 3306 'expose port' 'e'
DEFINE_string "version" '8.4.5' 'mysql version' 'v'

# 解析命令行参数
FLAGS "$@" || exit $?
eval set -- "${FLAGS_ARGV}"
echo "password, ${FLAGS_password}! expose ${FLAGS_expose} version ${FLAGS_version} ."

# 创建必要的目录和文件
mkdir -p ./.tmp
echo "$FLAGS_password" >./.tmp/password.txt

# 创建 .env 文件
cat >./.env <<EOF
MYSQL_ROOT_PASSWORD=${FLAGS_password}
MYSQL_PORT=${FLAGS_expose}
MYSQL_VERSION=${FLAGS_version}
EOF

# 创建 my.cnf 文件
cat >"./my.cnf" <<EOF
# Default MySQL server config
[mysqld]
# allow connections from any
bind-address=0.0.0.0
# mysqld_exporter 使用
[client]
user=exporter
password=${FLAGS_password}
host=db
port=3306
EOF

# 设置正确的文件权限
chmod 644 ./my.cnf

# 删除网络
docker network remove mysql-network 2>/dev/null || true
# 删除卷
docker volume rm mysql_data 2>/dev/null || true

# 停止并删除现有容器
docker-compose down

# 启动服务
docker-compose up -d
